大家好,我是阿晟,目前任職於均一教育平台的資料治理組。
雖然是資料工程師,不過工作範圍涵蓋 data infra 的建立、pipeline 與 API 的維運與優化、指標系統建立與報表產出等。
均一教育平台是一個免費的學習平台,提供國小至高中各科目的學習影片及習題等資源,供學生及老師使用,期待在這個數位化的時代中,能利用數位平台進行差異化、個人化的學習。我們資料治理組平常就是負責處理學生使用平台的資料,對內提供各業務單位進行 data-driven 的決策,對外呈現平台成效、推廣平台功能,這份公開資料應該可以幫助大家更直觀地理解我們會處理到的資料。
這個系列文章想要記錄我們一年多前想要人如其名、優化資料治理,而開始導入 dbt 的旅程。回首望去,一路走來遇到的各種坑坑洞洞,當初沒想到的、文件沒說清楚的,跟大家分享拿著指導手冊上戰場時各種水土不服的實戰經驗,期待可以跟在觀望、在實作的大家一起學習與討論~
在旅程的一開始,不免俗地先前情提要一下平台的資料架構以及技術工具,讓大家更清楚我們將 dbt 施力在資料架構的哪個環節。
在資料處理架構上,我們選用的是 GCP 的服務,資料從 DB 備份至 Cloud Storage 後,通通都先匯入到功能強大萬能的 BigQuery 中,作為我們的 Lakehouse。在導入 dbt 前,我們利用內建的 procedure 來建立與管理 pipeline,並利用 airflow 排程觸發相對應的 procedure,大致如下圖:
看起來簡潔易懂,在工具的選用上,簡潔有力是很不錯的特質,要是有一套工具可以一打全,那肯定超方便的(像是 BigQuery 就不斷擴充功能,但又快、又好、又便宜是不可能的…)
在導入了 dbt 後,資料處理架構大致如下圖:
作為工程師,俗話說的好:「會動的程式,不要動!」
我們為何要改變原先的架構呢?甚至大動干戈地導入一套新的工具來取代原先在線上服務的流程呢?
接下來我們將深入探討:在現有的架構上遇到了什麼樣的挑戰,以及我們認為導入 dbt 可以幫助我們解決什麼困難。